package mediator_pattern;

import lombok.Getter;
import lombok.Setter;

/**
 * @author 申书航
 * @version 1.0
 * 组件类的抽象基类，定义了组件的基本行为和属性。
 */
public abstract class Component {

    @Getter
    @Setter
    protected String text;

    private final Mediator mediator;

    protected final String name;

    /**
     * 构造方法，初始化中介者和组件名称。
     *
     * @param mediator 中介者实例
     * @param name 组件名称
     */
     Component(Mediator mediator, String name) {
        this.mediator = mediator;
        this.name = name;
    }

    /**
     * 触发事件的方法，调用中介者的相应方法。
     *
     * @param event 事件名称
     */
    public void triggerEvent(String event) {
         mediator.triggerEvent(event, this);
    }

    /**
     * 抽象更新方法，具体组件需实现该方法以响应更新。
     *
     * @param args 可变参数，更新的内容
     */
    public abstract void update(String... args);
}
